--热更新就是指用服务器的新版本代码来替换掉客户端本地的旧版本的代码，
--从而达到客户端功能更新的效果。
--我们假设下面的函数实现了从服务器拉取一个Button.lua的功能
function GetButtonFileFromRemoteServer()
	return "local M={} function M:Awake() print(\"I am new Button.lua one the server\")  end return M"
end
--一开始我们创建游戏物体，并为游戏物体绑定一个Button.lua这个脚本。
--然后我们用远程服务器上的Button.lua代码更新掉本地的Button.lua
--然后再为游戏物体绑定Button.lua，此时绑定上的是远程服务器上下载下来的Button.lua而不是本地的这个。
--你可以选择把从远程服务器上下载下来的Button.lua保存到本地，覆盖掉本地的Button.lua，以永久性的更新Button.lua这个文件
local obj=Alice.GameObject.New()
obj:AttachScript("Button")--此时绑定的是旧版本的Button.lua,会打印旧版本Button.lua里面的日志。
--现在我先从服务器拿到新版本的Button.lua的代码
local script=GetButtonFileFromRemoteServer()
--然后再刷新内存中的Button.lua脚本
local func, err = loadstring(script)
if func then
	local ok, ret= pcall(func)
	if not ok then
		print("execute script error")
	else
		ret.Name="Button"
		package.loaded.Assets["Button"]=ret--所有的lua脚本都会被加载到package.loaded.Assets表里
	end
else
	D.debug("load string error :",err)
end
--此时内存中的Button.lua已经被刷新
obj:AttachScript("Button")